package com.itheima.mapper.client;

import com.itheima.client.addresspojo.dto.AddressAddDto;
import com.itheima.client.addresspojo.dto.AddressUpdateDto;
import com.itheima.client.addresspojo.vo.AddressAllVo;
import com.itheima.client.addresspojo.vo.AddressByIdVo;
import com.itheima.client.addresspojo.vo.AddressDefaultVo;
import com.itheima.client.addresspojo.vo.AddressVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @author wuzhiyong
 */
@Mapper
public interface AddressMapper {

    /**
     * 设置默认收货地址
     * @param id id
     * @return 条数
     */
    int updateIsDefault(String id,String userId);
    /**
     * 设置默认收货地址-重置其他地址
     * @param id id
     * @return 条数
     */
    int updateNoDefault(String id,String userId);

    /**
     * 添加地址
     * @param addressAddDto addressAddDto
     * @return 条数
     */
    int insertAddress(AddressAddDto addressAddDto);
    /**
     * 添加地址-返回前端多需
     * @param id id
     * @return List<AddressVo>
     */
    List<AddressVo>selectById(String id);
    /**
     * 添加地址-根据userId获取地址id
     * @param userId userId
     * @return id
     */
    @Select("select id from reggie.client_address where user_id=#{userId}")
    List<String> selectIdByUserId(String userId);

    /**
     * 删除地址
     * @param ids ids
     * @return 条数
     */
    int deleteAddressByIds(String[] ids);
    /**
     * 删除地址-查询是否是默认地址
     * @param id id
     * @return 1/0
     */
    @Select("select isDefault from client_address where id=#{id}")
    int selectIsDefault(String id);

    /**
     * 修改地址
     * @param addressUpdateDto addressUpdateDto
     * @return 条数
     */
    int updateAddressById(AddressUpdateDto addressUpdateDto);

    /**
     * 获取默认收货地址
     * @return AddressDefaultVo
     */
    AddressDefaultVo selectDefault(String userId);

    /**
     * 获取收货地址列表
     * @param userId userId
     * @return  List<AddressAllVo>
     */
    List<AddressAllVo> selectAllAddress(String userId);

    /**
     * 根据Id获取地址
     * @param id id
     * @return AddressById
     */
    AddressByIdVo selectAddressById(String id);
}
